﻿/// <remarks>
/// 系统名称            :   ITALKI 支付系统
/// 模块名称            :   Payment
/// 文件代码            :   
/// 功能概述            :   
/// 创建人              :   Snail
/// 创建日期            :   2008.08.28
/// 版本号              :   1.0.0.0
/// ----------< 修改履历 >---------------------------------------------------------------
/// 修改日期          修改人              修改内容                           版本号
/// 2008.08.28      snail             创建文件。                         1.0.0.0
/// ------------------------------------------------------------------------------------
/// (C) 2007-2008 上海微语信息技术有限公司 版权所有，保留所有权利。
/// ------------------------------------------------------------------------------------
///</remarks>

using System;
using System.Collections.Generic;
using System.Text;
using IProvider.Config;
using Model.WWW_WWW.Payment;
using Model.WWW_User.User;

namespace IProvider.Interface
{
    /// <summary>
    /// 数据提供者抽象类。
    /// </summary>
    public abstract class IPaymentProvider
    {
        private static IPaymentProvider instance;
        /// <summary>
        /// 返回实例。
        /// </summary>
        public static IPaymentProvider Instance {
            get {
                if (instance == null) {
                    instance = (IPaymentProvider)Activator.CreateInstance(Common.GetTypeFromAssembly(WWW_WWW_Payment_Config.AssemblyName, WWW_WWW_Payment_Config.DbProviderType));
                }
                return instance;
            }
        }

        /// <summary>
        /// 创建学生帐户。
        /// </summary>
        /// <param name="acc">帐户对象。</param>
        /// <returns>受影响的行数。</returns>
        public abstract int CreateSAccount(Account acc);


        /// <summary>
        /// 是否已经创建了帐户。
        /// </summary>
        /// <param name="memberno">会员编号。</param>
        /// <returns>是否已经创建了帐户。</returns>
        public abstract bool GetHasAccount(string memberno);


        /// <summary>
        /// 获得用户信息。
        /// </summary>
        /// <param name="memberno">会员编号。</param>
        /// <returns>UserProfile</returns>
        public abstract UserProfile GetUserModel(string memberno);


        /// <summary>
        /// 创建教师帐户。
        /// </summary>
        /// <param name="acc">帐户对象。</param>
        /// <returns>受影响的行数。</returns>
        public abstract int CreateTAccount(Model.WWW_WWW.Payment.Account acc);


       
        /// <summary>
        /// 课程支付。
        /// </summary>
        /// <param name="SessionID">课程订单编号。</param>
        /// <param name="memberNO">学生会员编号。</param>
        /// <param name="payPassword">支付密码。</param>
        /// <returns>True成功支付。False支付失败。</returns>
        public abstract bool Pay(long sessionID, string memberNO, string payPassword);


        /// <summary>
        /// 获得课程订单状态。
        /// </summary>
        /// <param name="sessionID">课程订单编号。</param>
        /// <returns>Session对象。</returns>
        public abstract Session GetSession(long sessionID);

    }
}